package 数组;

public class 移除元素 {
    public static void main(String[] args) {
        //
        int[] arr1={1,2,3,4,3,5};
        int val = 3;
        int re = removeElement(arr1,val);

        for(int i = 0;i < re;i++){
            System.out.print(arr1[i]+" ");
        }
    }
    //快慢指针
    //快指针：寻找新数组的元素 ，新数组就是不含有目标元素的数组
    //慢指针：指向更新 新数组下标的位置
    public static int removeElement(int[] nums, int val) {
        int slow = 0;
        for(int fast = 0; fast < nums.length; fast++){
            if(val != nums[fast]){
                nums[slow++]  = nums[fast];
            }
            //如果不等于就更新数组，等于了，slow就停住，fast去找新数组的元素 来换这个不要的元素，可以保持相对位置不变
            //快指针：寻找新数组的元素 ，新数组就是不含有目标元素的数组
            //慢指针：指向更新 新数组下标的位置
            //快指针：寻找新数组的元素 ，新数组就是不含有目标元素的数组
            //慢指针：指向更新 新数组下标的位置
            //快指针：寻找新数组的元素 ，新数组就是不含有目标元素的数组
            //慢指针：指向更新 新数组下标的位置
        }
        return slow;
    }
    // 暴力
    public static  int removeElement2(int[] nums, int val) {
        int size = nums.length;

        for(int i = 0; i <  size; i++){
            if(val==nums[i]){
                for(int j = i + 1;j <  size; j++){
                    nums[j-1] = nums[j];
                }
                i--;
                //移动完后size再减
                size--;
            }
        }
        return size;
    }
}

